package com.example.mapping.entity.visit;

import com.example.mapping.manage.visit.Visitor;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.collect.Lists;
import lombok.Data;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * json映射信息
 * 访问者思想+组合处理树形结构
 *
 * @author baoyoujia
 * @date 2022/10/19
 */
@Data
public class JsonMappingVisitInfo {

    /**
     * json name
     */
    private String name;

    /**
     * json的ObjectNode形式
     */
    private JsonNode node;

    /**
     * 存储遍历后的节点
     */
    private List<JsonNode> nodes;

    /**
     * 添加jsonNode到节点
     * @param jsonNode jsonNode
     */
    public void addNodes(JsonNode jsonNode) {
        if (CollectionUtils.isEmpty(nodes)) {
            nodes = Lists.newArrayList();
        }
        nodes.add(jsonNode);
    }

    /**
     * 访问
     * @param visitor 访问者
     */
    public void execute(Visitor visitor) {
        visitor.visit(this);
    }
}
